package com.d3works.apps.account.service.analytic;

import com.d3works.apps.account.db.AnalyticAccount;
import com.d3works.apps.account.db.AnalyticAxis;
import com.d3works.apps.account.db.AnalyticMoveLine;
import com.d3works.apps.account.db.AnalyticMoveLineQuery;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface AnalyticMoveLineQueryService {

  public String getAnalyticMoveLineQuery(AnalyticMoveLineQuery analyticMoveLineQuery);

  public Set<AnalyticMoveLine> analyticMoveLineReverses(
      AnalyticMoveLineQuery analyticMoveLineQuery, List<AnalyticMoveLine> analyticMoveLines);

  public Set<AnalyticMoveLine> createAnalyticaMoveLines(
      AnalyticMoveLineQuery analyticMoveLineQuery, List<AnalyticMoveLine> analyticMoveLines);

  public Map<AnalyticAxis, AnalyticAccount> getReverseRules(
      AnalyticMoveLineQuery analyticMoveLineQuery);

  List<AnalyticAxis> getAvailableAnalyticAxes(
      AnalyticMoveLineQuery analyticMoveLineQuery, boolean isReverseQuery);
}
